perm filename MSIN.F4[NEW,LCS] blob
sn#592314 filedate 1981-06-07 generic text, type T, neo UTF8
00100 C ********** PROCESSES INPUT FOR MS PROGRAM. PUTS OUT .MS FILES.
00300 C*** CALLS FOLLOWING SUBROUTINES: READX,SCMSS,HOMX,NAMEXT
00400
00500 IMPLICIT INTEGER(A-Q,S-Z)
00600 REAL DIS,STFF,CENTR,POS
00700 COMMON /DL/X22,SAVER,NAME,EXT,IOLD
00800 1/RINP/R(10,80),RPOS(2,50),RI(200) /RMOD/RMODE2,RSET4,IBEAM,
00910 3 NOSET,STEM,STUP,NTC,ENDP,RAD,RDD,ITB,POSB
00920 COMMON/SCX/ICOM,MINUS,IDOT,IEQ,LPRN,IRPRN,IPLUS,ISTAR,ICOLON,
00940 1 ISEMI,IDBQT,IBLA,IDOL,IPRCNT,IANPR,IAT,INUM,LESS,IGT,IAPOS,
00960 1 IQUES,IEXCLA,LBRK,RBRK,UPAR,DNAR,DBLAR,SLA,XX,ZZ,
00980 1 J4,LL,Y,K,RX,RZ,RA,J5
01100 C ORDER OF COMMON MUST! REMAIN AS IS (FOR DMP MODE READ)
01200 COMMON /LIMIT/LIMIT,ITEM,L,I,IX,ITEMX,ILIM
01300 1 /STF/RSTFAC(0/7),RSTJ2
01400 2 /POSI/STFF(0/7),JJ2,POS /ALF/INP(72),ML
01500 3 /SCM/V(78),ISCR,LCNT,RSTF,LIST(200),REND
01600 4 /IDEV/IDEV,CHNG
01700 5 /PLTR/PLT,RHT,DIS,XDIS /PTR/PWDS(350)
01800 CC 2 /JCHAR/IXX,ISEMI,IBLA,IG,JED,KED,REDIT,RITEM
01900 COMMON R2,JA,CENTR,J2,RJQ(20),JQ(20) /RNW/RNW
02000 1 /XRN/RN(3000) /DPY/ST(4000),MEDIT,IGO
02200 EQUIVALENCE (R5,RJQ(3)),(I4,INP(4)),(R6,RJQ(4)),(R4,RJQ(2)),
02400 2(R7,RJQ(5)),(R3,RJQ(1)),(I2,INP(2)),(I1,INP(1)),(I3,INP(3)),
02500 4 (R8,RJQ(6)),(IPOS,POS)
02700 DATA RNW/2.44/,LCNT/1/,LIMIT/3000/,DIS/1.0/, RHT/1.0/
02800 5 ,EXT/'MS '/
02810 CC 5 ,PLUS/'+'/,EXT/'MS '/,COMMA/','/,ISEMI/';'/,IBLA/' '/
03200 C LIMIT IS MAIN ARRAY LENGTH (3000)
03300 C 350 LIM. ON ITEMS PWDS.
03400
03500 IDEV=1
03600 I1=0
03700 IX=0
03800 RSET4=999
03900 RPOS(1,1)=0
04000 PWDS(1)=1
04200 C FOR RESTART. AVOIDS STAFF CODE NUM.
04300 DO 30 K=0,7
04400 30 RSTFAC(K)=1.
04500 M=1
04600 ITEM=0
04700 I=1
04800 40 SCORE=-1
04900
05000 TYPE 100
05100 100 FORMAT(' TYPE FILE NAME (OR X=DONE) '$)
05200 101 FORMAT(2A5)
05300 ACCEPT 101,NAME
05400 IF(NAME.EQ.IBLA)NAME='INPUT'
05500 IF(NAME.EQ.'X')GO TO 1100
05600 CALL IFILE(1,NAME)
05700
05800 130 READ(IDEV,700,END=40)INP
05900 C WILL NOT READ 'E' DIRECTORY PAGES!
06000 IF(I1.EQ.IBLA)GO TO 130
06100 320 CALL READX
06200 IF(I1.LT.0)GO TO 950
06300 C DO NEXT IF 1ST CHAR. WAS NUMBER.
06400 M=I
06500 RN(I+1)=JA
06600 RN(I+2)=R2
06700 K=10
06800 J=0
06900 400 IF(RJQ(K).EQ.0)GO TO 420
07000 IF(J.EQ.0)J=K
07100 C SAVE POINTER TO LAST NUM. IN LIST
07200 420 RN(I+K+2)=RJQ(K)
07300 K=K-1
07400 IF(K.GT.0)GO TO 400
07500 RN(I)=J
07600 I=I+J+3
07700 GO TO 1020
07800
07900 700 FORMAT(72A1)
08000 950 JA=140
08100 RMODE2=R3
08300 960 SCORE=0
08400 IF(JA.NE.140)GO TO 990
08500 C NEXT PUTS UP STAFF IF IT WASN'T THERE ALREADY
08600 RSTF=R2
08700 DO 970 K=1,ITEM
08800 J=PWDS(K)
08900 IF(RN(J+1).NE.8.)GO TO 970
09000 IF(RN(J+2).NE.R2)GO TO 970
09100 ITEM=ITEM-1
09200 GO TO 980
09300 970 CONTINUE
09400 C DIDN'T FIND THIS STAFF
09500 C ITEM=ITEM+1
09600 RSTF=R2
09700 RN(I)=6.
09800 RN(I+1)=8.
09900 RN(I+2)=R2
10000 IF(R3.LT.0)R3=0
10100 RN(I+3)=R3
10200 RN(I+4)=R4
10300 RN(I+5)=R5
10400 RN(I+6)=R6
10500 RN(I+7)=R7
10600 RN(I+8)=R8
10700 IF(R5.EQ.0)R5=1.
10800 RSTFAC(IFIX(R2))=R5
10900 C P4 ???
11000 I=I+9
11100 980 JA=140
11200 ICHK=I
11300 990 M=I
11400 REND=0
11500 C REND=0 GO, -1=NORMAL END, 1=ABORTED.
11600 CALL SCMSS
11700 IOLD=0
11800 1020 J=M
11900 1030 ITEM=ITEM+1
12000 PWDS(ITEM)=J
12100 J=J+RN(J)+3
12200 IF(J.LE.I)GO TO 1030
12300 ITEM=ITEM-1
12400 IF(IBEAM.LT.0)GO TO 130
12500 R2=RSTF
12600 JA=-1
12700 CALL HOMX
12800 C GO ADJUST STEM LENGTHS
12850 CALL SHRINK(JIT)
12875 C GETS RID OF UNNEEDED ZEROS IN PARAM LIST.
12900 GO TO 130
13000 1100 CALL TYPSTR('NAME.EXT? ')
13100 ACCEPT 700,INP
13200 CALL NAMEXT(INP,NAME,EXT)
13300 IF(NAME.EQ.IBLA)NAME='TMP'
13400 IF(EXT.EQ.IBLA)EXT='MS'
13500 41 CALL PUTEXT(NAME,EXT)
13600 JJ2=ITEM+2
13700 IPOS=I
13800 CALL EXTOUT(RSTFAC,128)
13900 CALL EXTOUT(RN,I)
14000 CALL FINEXT
14100 END
14600 SUBROUTINE PNUM
14700 END
14800 SUBROUTINE PRESCN
14900 END
16600 SUBROUTINE LO2UP
16700 END
16800
16900 SUBROUTINE NAMEXT(I,NAME,IEXT)
17000 C FINDS NAME.EXT IN A1 STRING
17100 DIMENSION I(1)
17120 COMMON/SCX/ICOM,MINUS,IDOT,IEQ,LPRN,IRPRN,IPLUS,ISTAR,ICOLON,
17140 1 ISEMI,IDBQT,IBLA
17200
17300 IF(I(1).NE.-1)GO TO 9
17400 C FIRST PASS UP 'G', 'GM', 'RS', ETC. (=-1)
17500 DO 1 K=1,72
17600 1 IF(I(K).EQ.IBLA)GO TO 2
17700 C NOW PASS BLANKS
17800 2 J=72
17900 DO 3 J=K+1,72
18000 3 IF(I(J).NE.IBLA)GO TO 4
18100 C NOW FOUND START OF WORD (UNLESS ALL BLANKS)
18200 4 IF(J.NE.72)GO TO 5
18300 NAME=IBLA
18400 RETURN
18500 9 J=1
18600 5 DO 6 K=J,72
18700 IF(I(K).EQ.IBLA)GO TO 7
18800 C JUMP IF NAME ONLY
18900 6 IF(I(K).EQ.IDOT)GO TO 8
19000 7 CALL PACKX(NAME,I(J))
19100 RETURN
19200 8 CALL RLOOP(I(61),I(J),K-J)
19300 CALL PACKX(NAME,I(61))
19400 CALL PACKX(IEXT,I(K+1))
19500 END
19600
19700 SUBROUTINE PACKX(NAM,KNM)
19800 DIMENSION KNM(5)
19900 DATA KK/128/,LL/"377777777777/,JJ/"2000000000/
20000 1 , MM/"774000000000/
20100 NAM=0
20200 DO 12 K=5,1,-1
20300 NAM=NAM .OR. (KNM(K) .AND. MM)
20400 IF (K.EQ.1)RETURN
20500 17 IF (NAM.GE.0)GO TO 13
20600 NAM = (( NAM .AND. LL)/KK) .OR. JJ
20700 GO TO 12
20800 13 NAM = NAM / KK
20900 12 CONTINUE
21000 RETURN
21100 END
21200
21300 BLOCK DATA
21400 C **** WHEN JALPHA IS EXTENDED FIX LOOP AT 365 AND SUBR. NEWR(IN LOOP)
21500 C **** AND SUBR. SCMSS, NOTBMS, RHYTH AND BEAMS
21600 COMMON/SCX/JALPHA(30),J4,L,Y,K,RX,RZ,RA,J5
22000 COMMON/SCN/KEL,KR,KU,KD,KSLA,NONO(30)
22100 1 /NUM/NUM(10),JRD/MKS/MKS(14)
22200 COMMON/A2Z/IAZ(26)
22400 2 /POSI/STFF(0/7),JJ2,POS /STF/RSTFAC(0/7),RSTJ2
22700 COMMON/FRMT/F78F(1),FONE(1),FA5(1),ASK
22720 2 /MKX/MKX(11) /SC/SSC(72)
22736 DATA MKX/'/',';','<','>',-19728949184,-18655207360,'(',')','.'
22752 1,'-','*'/,SSC(14)/'X'/,SSC(15)/';'/,SSC(72)/' '/
22755 C THE GIANT NUMBERS ARE FOR [ AND ]
22768 C LIMIT IS MAIN ARRAY LENGTH (3000) /SC/SSC ARRAY USED IN MARKS,BEAMS,SLURS
22784 C 350 LIM. ON ITEMS PWDS.
22800 DATA F78F/'(78F)'/,FONE/'(A1 )'/,FA5/'(A5 )'/
22900 DATA LEL/'L'/,LR/'R'/,LU/'U'/,LD/'D'/,LE/'E'/
23000 1,LC/'C'/,LS/'S'/,LF/'F'/,LA/'A'/,LI/'I'/,LW/'W'/,XFONT/50./
23100 DATA IAZ/'A','B','C','D','E','F','G','H','I','J','K','L','M',
23200 1 'N','O','P','Q','R','S','T','U','V','W','X','Y','Z'/
23300 C 1 ,IBKSL/"561004020100/
23400 C IBKSL=\ BACKSLASH - NOT USED YET 5/80
23500 DATA JALPHA/',','-','.','=','(',')','+','*',':',';'
23600 1 ,'"',' ','$','%','&','@','#','<','>',1H','?','!'
23700 1 ,"555004020100,"565004020100,"571004020100,"5004020100,
23800 1 "135004020100,'/',"755004020100,"771004020100/
23900 1 ,STFF/-469.,-346.,-223.,-100.,23.,146.,269.,392./,RSTFAC/8*1./
24000 DATA MKS/'W','A','F','S','M','T','D','U','H','I','P','C','R','O'/
24100 DATA NUM/'0','1','2','3','4','5','6','7','8','9'/,JRD/0/
24200 END